home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / Updates, etc. / PG PRO⁄PG Lite Demos / PG PRO Demo / PG PRO Demo.rsrc / TEXT_3005_QuickTime.FLTR.txt < prev    next >
Text File  |  1993-09-10  |  8KB  |  258 lines

  1. '=============================================================================
  2. '=                         Copyright 1992 Staz‚Ñ¢ Software, Inc.               =
  3. '=                               All rights reserved                         =
  4. '=                          "QuickTime.FLTR" from PG:PRO                     =
  5. '=============================================================================
  6. INCLUDE FILE _aplIncl
  7. COMPILE 0,_MacsbugLabels_strResource_caseInsensitive'set by PG:PRO
  8. GLOBALS "PG PRO.GLBL"'include PG stuff
  9. END GLOBALS'end of our globals
  10. INCLUDE "@Header.INCL"
  11. GOTO"QT Filter"
  12.  
  13. DIM RECORD movieRecord
  14. DIM moovFSVRefNum'movie file vol ref num
  15. DIM moovFSParID&'movie file parent ID
  16. DIM 63 moovFSName$'movie file name
  17. DIM moovResRef'movie resource file reference
  18. DIM moovResID'movie resource ID
  19. DIM moovMovie&'movie reference number
  20. DIM moovController&'movie controller ref
  21. DIM moovT,moovL,moovB,moovR'movie rect
  22. DIM END RECORD.movieRecSz
  23. '
  24. '============================================================================
  25. CLEAR LOCAL
  26. LOCAL FN QTErrors(theErr,bool)
  27. '==========================================================================
  28. DIM 60 pTxt$(1)
  29. SELECT theErr
  30. CASE 1'no "Movie" window
  31. pTxt$(0) = "You must create a window named "+CHR$(34)+"Movie"+CHR$(34)+"."
  32. pTxt$(1) = "QT 1"
  33. CASE 2'QT not available
  34. pTxt$(0) = "QuickTime is not available on this machine."
  35. pTxt$(1) = "QT 2"
  36. CASE 3'couldn't init QT
  37. pTxt$(0) = "I could not initialize QuickTime."
  38. pTxt$(1) = "QT 3"
  39. CASE 4'QT call failed
  40. pTxt$(0) = "One of the QT calls in this filter ended in an error."
  41. pTxt$(1) = "QT 4"
  42. CASE 5'memory error
  43. pTxt$(0) = "I was not able to obtain enough memory for this operation."
  44. pTxt$(1) = "QT 5"
  45. CASE 6'file resolution error
  46. pTxt$(0) = "I was not able to open that movie using the path"
  47. pTxt$(0) = pTxt$(0) + "information provided."
  48. pTxt$(1) = "QT 6"
  49. END SELECT
  50. CALL PARAMTEXT(pTxt$(0),pTxt$(1),"","")
  51. FN pGshowErr(0)
  52. IF bool THEN STOP
  53. % LINE"QTFlag",0
  54. END FN
  55. '============================================================================
  56. LOCAL FN QTRemoveRes(resHndl&)
  57. '==========================================================================
  58. OSErr = FN HNOPURGE(resHndl&)
  59. homeRes = FN HOMERESFILE(resHndl&)
  60. curRes = FN CURRESFILE
  61. CALL USERESFILE(homeRes)
  62. CALL RMVERESOURCE(resHndl&)
  63. DEF DISPOSEH(resHndl&)
  64. CALL USERESFILE(curRes)
  65. END FN
  66. '============================================================================
  67. LOCAL FN QTKillVars
  68. '==========================================================================
  69. DO'look for old var resources
  70. resHndl& = FN GETINDRESOURCE(_"Moo!",1)'get a handle to one
  71. IF resHndl& THEN FN QTRemoveRes(resHndl&)'valid handle?
  72. UNTIL resHndl& = 0'till there are no more
  73. END FN
  74. '============================================================================
  75. LOCAL FN QTInit
  76. '==========================================================================
  77. GOTO"After Flag"
  78. "QTFlag"
  79. MACHLG -1
  80. "After Flag"
  81.  
  82. DIM 60 pTxt$(3)
  83. FN QTKillVars
  84. resHndl& = FN GETNAMEDRESOURCE(_"pG3w","Movie")
  85. IF resHndl& = 0 THEN FN QTErrors(1,_false)
  86.  
  87. QTVers = FN GESTALT(_"qtim")
  88. LONG IF SYSERROR
  89. FN QTErrors(2,_false)
  90. XELSE
  91. IF FN ENTERMOVIES THEN FN QTErrors(3,_zTrue)
  92. END IF
  93. END FN
  94. '============================================================================
  95. CLEAR LOCAL
  96. LOCAL FN QTGetParID(fName$,fVRefNum)
  97. '==========================================================================
  98. pBlk& = @paramBlock$'pBlock for file spec
  99. & pBlk& + _ioNamePtr  ,@fName$'file name to pBlock
  100. % pBlk& + _ioVRefNum  ,fVRefNum'vol ref num to pBlock
  101. % pBlk& + _ioFDirIndex,0'flag pBlk to use name & vRef
  102. OSErr = FN GETCATINFO(pBlk&)'get info on movie file
  103. END FN = [pBlk& + _ioFLParID]'parent ID is what we needed
  104. '============================================================================
  105. LOCAL FN QTEvents
  106. '==========================================================================
  107. DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
  108. DIM mT,mL,mB,mR
  109.  
  110. movieCount = FN COUNTRESOURCES(_"Moo!")
  111. LONG IF movieCount
  112. FOR thisMovie = 1 TO movieCount
  113. resHndl& = FN GETINDRESOURCE(_"Moo!",thisMovie)
  114. LONG IF resHndl&
  115. BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
  116. X = USR MCISPLAYEREVENT(controller&,EVENT)
  117. END IF
  118. NEXT
  119. END IF
  120. END FN
  121. '============================================================================
  122. LOCAL FN QTNulls
  123. '==========================================================================
  124. DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
  125. DIM mT,mL,mB,mR
  126.  
  127. movieCount = FN COUNTRESOURCES(_"Moo!")
  128. LONG IF movieCount
  129. FOR thisMovie = 1 TO movieCount
  130. resHndl& = FN GETINDRESOURCE(_"Moo!",thisMovie)
  131. LONG IF resHndl&
  132. BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
  133. LONG IF FN ISMOVIEDONE(movie&) = _false
  134. CALL MOVIESTASK(movie&,100)
  135. END IF
  136. END IF
  137. NEXT
  138. END IF
  139. FN QTEvents
  140. END FN
  141. '============================================================================
  142. LOCAL FN QTUpdate
  143. '==========================================================================
  144. DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
  145. DIM mT,mL,mB,mR
  146.  
  147. resHndl& = FN GETRESOURCE(_"Moo!",gOutputWnd)
  148. LONG IF resHndl&
  149. BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
  150. OSErr = FN UPDATEMOVIE(movie&)'tell QT to update
  151. END IF
  152. END FN
  153. '============================================================================
  154. CLEAR LOCAL
  155. LOCAL FN QTopen
  156. '==========================================================================
  157. DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
  158. DIM mT,mL,mB,mR
  159.  
  160. LONG IF gFileType& = _"MooV"
  161. fsName$   = gFileName$
  162. fsVRefNum = gFileVol
  163. fsParID&  = FN QTGetParID(fsName$,fsVRefNum)
  164. LONG IF FN OPENMOVIEFILE(fsVRefNum,resRef,_fsRdPerm)
  165. FN QTErrors(4,_false)
  166. XELSE
  167. LONG IF FN NEWMOVIEFROMFILE(movie&,resRef,resID,resName$,1,dataRefChg)
  168. FN QTErrors(4,_false)
  169. XELSE
  170. CALL GETMOVIEBOX(movie&,mT)
  171. CALL OFFSETRECT(mT,-mL,-mT)
  172. CALL SETMOVIEBOX(movie&,mT)
  173. resHndl& = FN GETNAMEDRESOURCE(_"pG3w","Movie")
  174. LONG IF resHndl&
  175. OSErr = FN HNOPURGE(resHndl&)
  176. CALL GETRESINFO(resHndl&,ID,tp&,t$)
  177. mB = mB + 16
  178. r = {[resHndl&]+_left} + mR
  179. b = {[resHndl&]+_top } + mB
  180. % [resHndl&]+_bottom,b
  181. % [resHndl&]+_right ,r
  182. FN pGreplaceRes(resHndl&,_"pG3w",ID,"")
  183. FN pGbuild(-ID)
  184. ID = WINDOW(_outputwnd)
  185. CALL SETWTITLE(WINDOW(_wndpointer),fsName$)
  186. wPtr& = WINDOW(_wndpointer)
  187. CALL SETMOVIEGWORLD(movie&,wPtr&,0)
  188. controller& = FN NEWMOVIECONTROLLER(movie&,mT,0)
  189. rslt = USR MCNEWATTACHEDCONTROLLER(controller&,movie&,wPtr&,mT)
  190. resHndl& = FN NEWHANDLE (_movieRecSz)
  191. LONG IF resHndl&
  192. BLOCKMOVE @fsVRefNum,[resHndl&],_movieRecSz
  193. FN pGreplaceRes(resHndl&,_"Moo!",ID,fsName$)
  194. CALL UPDATERESFILE(gResRef)
  195. resHndl& = FN GETRESOURCE(_"Moo!",ID)
  196. IF resHndl& THEN OSErr = FN HNOPURGE(resHndl&)
  197. XELSE
  198. FN QTErrors(5,_zTrue)
  199. END IF
  200. XELSE
  201. FN QTErrors(1,_false)
  202. END IF
  203. END IF
  204. END IF
  205. END IF
  206. END FN
  207. '============================================================================
  208. LOCAL FN QTClose(theWindow)
  209. '==========================================================================
  210. DIM fsVRefNum,fsParID&,63 fsName$,resRef,resID,movie&,controller&
  211. DIM mT,mL,mB,mR
  212.  
  213. resHndl& = FN GETRESOURCE(_"Moo!",theWindow)
  214. LONG IF resHndl&
  215. BLOCKMOVE [resHndl&],@fsVRefNum,_movieRecSz
  216. CALL STOPMOVIE(movie&)
  217. CALL DISPOSEMOVIECONTROLLER(controller&)
  218. OSErr = FN CLOSEMOVIEFILE(resRef)
  219. CALL DISPOSEMOVIE(movie&)
  220. FN QTRemoveRes(resHndl&)
  221. END IF
  222. END FN
  223. '============================================================================
  224. LOCAL FN QTShutDown
  225. '==========================================================================
  226. DO
  227. resHndl& = FN GETINDRESOURCE(_"Moo!",1)
  228. LONG IF resHndl&
  229. CALL GETRESINFO(resHndl&,theWindow,tp&,t$)
  230. FN QTClose(theWindow)
  231. FN pGclose(theWindow)
  232. END IF
  233. UNTIL resHndl& = 0
  234. CALL EXITMOVIES
  235. END FN
  236. '============================================================================
  237. "QT Filter"
  238. LONG IF {LINE"QTFlag"}
  239. SELECT gAction
  240. CASE _mainAction
  241. SELECT gSubAction
  242. CASE _mainStart           :FN QTInit
  243. CASE _mainOpen            :FN QTopen
  244. CASE _mainShutDown        :FN QTShutDown
  245. END SELECT
  246. CASE _windowAction
  247. SELECT gSubAction
  248. CASE _windowClose         :FN QTClose(gWhichWindow)
  249. CASE _windowUpdate        :FN QTUpdate
  250. END SELECT
  251. CASE _otherAction
  252. SELECT gSubAction
  253. CASE _otherFilterEvent    :FN QTEvents
  254. CASE _otherNullEvent      :FN QTNulls
  255. END SELECT
  256. END SELECT
  257. END IF
  258. '============================================================================